/*
 *  author: Gregorovichz Carlos Rossi
 *  date: 31/03/2010
 */
var registroPersonalPolicial= null;
var registroPersona= null;
var winMantenerPersonal;
var fecha_baja;
var fecha_inicio;
function gestionarPersonalPolicial(){
    var dsPersonalPolicial=new Ext.data.GroupingStore({
        autoDestroy: true,
        url: "lista-personal-policial",
        reader: new Ext.data.JsonReader(
        {
            root: "personalpolicial",
            fields:[{
                name: "npersIdentificador",
                type: "integer"
            },{
                name: "cpersApepaterno",
                type: "string"
            },{
                name: "cpersApematerno",
                type: "string"
            },{
                name: "cpersNombre",
                type: "string"
            },{
                name: "cdepeNombre",
                type: "string"
            },{
                name: "npepoIdentificador",
                type: "integer"
            },{
                name: "npepoTiempoServicio",
                type: "string"
            },{
                name: "bpepoPerteneceCuadroMerito",
                type: "boolean"
            },{
                name: "dpepoFechaIngreso",
                type: "string"
            },{
                name: "dpepoFechaBaja",
                type: "string"
            },{
                name: "ngradIdentificador",
                type: "integer"
            },{
                name: "ndepeIdentificador",
                type: "integer"
            },{
                name: "cdepeNombre",
                type: "string"
            },{
                name: "cgradDescripcion",
                type: "string"
            },{
                name: "strFechaIngreso",
                type: "string"
            },{
                name: "strFechaBaja",
                type: "string"
            },]
        }),
        sortInfo:{
            field: 'cdepeNombre',
            direction: "ASC"
        },
        groupField: 'cdepeNombre'
    });
    dsPersonalPolicial.on("exception",function(proxy, type, action, options, response, arg){
        Ext.MessageBox.alert("Error","Sucedio un error al cargar el personal policial"+response.responseText);
    });

    var grdPersonalPolicial=new Ext.grid.GridPanel({
        store: dsPersonalPolicial,
        loadMask: false,
        height:470,
        plugins:[new Ext.ux.grid.Search({
            mode:'local',
            iconCls:false,
            minLength:2,
            width: 290
        })],
        columns:[new Ext.grid.RowNumberer(),{
            header: "Apellido Paterno",
            dataIndex: "cpersApepaterno",
            width: 180,
            sortable:true
        },{
            header: "Apellido Materno",
            dataIndex: "cpersApematerno",
            width: 180,
            sortable:true
        },{
            header: "Nombres",
            dataIndex: "cpersNombre",
            width: 180,
            sortable:true
        },{
            header: "Grado",
            dataIndex: "cgradDescripcion",
            width: 140,
            sortable:true
        },{
            header: "Dependencia",
            dataIndex: "cdepeNombre",
            align:'right',
            hidden :true,
            width: 0,
            sortable:false
        }],
        tbar:[{
            text:'Agregar',
            iconCls:'icon-add',
            handler: function(){
                mantenerPersonal(true);
            }
        }, '-', {
            text:'Modificar',
            iconCls:'icon-modify',
            handler: function(){
                mantenerPersonal(false);
            }
        },'-',{
            text:'Eliminar',
            iconCls:'icon-delete',
            handler: function(){
                eliminarPersonalPolicial();
            }
        },'-',{
            text:'Imprimir',
            iconCls:'icon-print',
            handler: function(){
                printPersonalPolicial();
            }
        }],
        view: new Ext.grid.GroupingView({
            forceFit:true,
            emptyText: 'No tiene usuarios asignados.',
            groupTextTpl : '{text} ({[values.rs.length]} {[values.rs.length > 1 ? "Efectivos" : "Efectivo"]})'
        })
    });
    grdPersonalPolicial.on("rowclick",function(grid,rowIndex,e){
        registroPersonalPolicial=grid.getStore().getAt(rowIndex);
    });

    var seleccionPersonalPolicial=grdPersonalPolicial.getSelectionModel();
    seleccionPersonalPolicial.on("rowselect",function(sm,fila,registro){
        registroPersonalPolicial=registro;
    });
    dsPersonalPolicial.load();
    var win = new Ext.Window({
        title:'Mantenimiento de Personal Policial',
        closeAction:'destroy',
        width:1050,
        x:0,
        y:0,
        shim:false,
        maximizable:false,
        resizable: false,
        animCollapse:false,
        layout: 'fit',
        items:grdPersonalPolicial
    });
    win.show();
}

function mantenerPersonal(nuevo){  
    var frmGestionarPersonalPolicial =new Ext.Panel({
        bodyBorder:true,
        height:400,
        bodyStyle: "background-color:#DFE8F6; border:0"
    });  
    new Ajax.Request("frmGestionarPersonalPolicial.html",{
        method: "post",
        asynchronous:false,
        onSuccess: function(transport){
            frmGestionarPersonalPolicial.html=transport.responseText;
            winMantenerPersonal= new Ext.Window({
                title: (nuevo ? 'Agregar ' : 'Modificar ') + 'Personal Policial',
                closeAction:'destroy',
                width:570,
                height:250,
                items:[frmGestionarPersonalPolicial],
                shim:false,
                modal:true,
                maximizable:true,
                minimizable:false,
                animCollapse:false,
                resizable:false,
                constrainHeader:true,
                bbar:[{
                    text:'Grabar',
                    iconCls:'icon-save',
                    handler: function(){
                        if (nuevo)
                            insertarPersonalPolicial();
                        else
                            actualizarPersonalPolicial();
                    }
                }, '-', {
                    text:'Cancelar',
                    iconCls:'icon-cancel',
                    handler: function(){
                        winMantenerPersonal.destroy();
                    }
                }]
            });
            winMantenerPersonal.show();
            fecha_inicio= new Ext.form.DateField({
                renderTo:'fingreso',
                id:'fingreso2',
                format:'d/m/Y'
            });
            fecha_baja= new Ext.form.DateField({
                renderTo:'fbaja',
                id:'fbaja2',
                format:'d/m/Y'
            });
            winMantenerPersonal.focus();
         //   cargarDependencias2();
            cargarGrados_2();
            if (!nuevo){
                $("frmgestionarpersonalpolicial").npersIdentificador.value = registroPersonalPolicial.data.npersIdentificador;
                $("frmgestionarpersonalpolicial").nombreCompleto.value = registroPersonalPolicial.data.cpersApepaterno+" "+
                registroPersonalPolicial.data.cpersApematerno+" "+registroPersonalPolicial.data.cpersNombre;
                $("frmgestionarpersonalpolicial").npepoIdentificador.value = registroPersonalPolicial.data.npepoIdentificador;
                $("frmgestionarpersonalpolicial").npepoTiempoServicio.value = registroPersonalPolicial.data.npepoTiempoServicio;
                $("frmgestionarpersonalpolicial").ndepeIdentificador.value = registroPersonalPolicial.data.ndepeIdentificador;
                $("frmgestionarpersonalpolicial").ngradIdentificador.value = registroPersonalPolicial.data.ngradIdentificador;
                $("nombreCompleto").disabled = true;
                $("btnbuscar").disabled = true;
                
                if (registroPersonalPolicial.data.bpepoPerteneceCuadroMerito){
                    $("bpepoPerteneceCuadroMerito_t").checked=true;
                    $("bpepoPerteneceCuadroMerito_f").checked=false;
                }else{
                    $("bpepoPerteneceCuadroMerito_t").checked=false;
                    $("bpepoPerteneceCuadroMerito_f").checked=true;
                }
                
                fecha_inicio.setValue(registroPersonalPolicial.get("strFechaIngreso"));
                fecha_baja.setValue(registroPersonalPolicial.get("strFechaBaja"));

            }
        },
        onFailure:function(t){
            Information("Aviso del Sistema","Sucedio un error al intentar cargar el formulario "+t.responseText);
        }
    });
}

function insertarPersonalPolicial(){
    $("frmgestionarpersonalpolicial").strFechaIngreso.value = fecha_inicio.getRawValue();
    $("frmgestionarpersonalpolicial").strFechaBaja.value = fecha_baja.getRawValue();

    var form = $("frmgestionarpersonalpolicial");
    if (form.nombreCompleto.value.length == 0) {
        Ext.MessageBox.show({
           title: "Error",
           msg: "Debe seleccionar una persona.",
           buttons: Ext.MessageBox.OK,
           icon: Ext.MessageBox.ERROR
        });
        return;
    }

    if (fecha_inicio.getValue().length == 0) {
        Ext.MessageBox.show({
           title: "Error",
           msg: "Debe ingresar la fecha de ingreso.",
           buttons: Ext.MessageBox.OK,
           icon: Ext.MessageBox.ERROR
        });
        return;
    }

    new Ajax.Request("personal-policial!input",{
        method:"post",
        parameters: $("frmgestionarpersonalpolicial").serialize(),
        onSuccess: function(transport){
            var operacion =transport.responseText.evalJSON();
            if (operacion.success){
                Information("Aviso del Sistema",operacion.mensaje);
            }else{
                Information("Aviso del Sistema",operacion.mensaje);
            }
            winMantenerPersonal.destroy();
            gestionarPersonalPolicial();
        },
        onFailure:function(transport){
            Information("Aviso del Sistema","Sucedio un error al intentar cargar el formulario"+transport.responseText);
        }
    });
}

function actualizarPersonalPolicial(){
    $("frmgestionarpersonalpolicial").strFechaIngreso.value = fecha_inicio.getRawValue();
    $("frmgestionarpersonalpolicial").strFechaBaja.value = fecha_baja.getRawValue();

    var form = $("frmgestionarpersonalpolicial");
    if (form.nombreCompleto.value.length == 0) {
        Ext.MessageBox.show({
           title: "Error",
           msg: "Debe seleccionar una persona.",
           buttons: Ext.MessageBox.OK,
           icon: Ext.MessageBox.ERROR
        });
        return;
    }

    if (fecha_inicio.getValue().length == 0) {
        Ext.MessageBox.show({
           title: "Error",
           msg: "Debe ingresar la fecha de ingreso.",
           buttons: Ext.MessageBox.OK,
           icon: Ext.MessageBox.ERROR
        });
        return;
    }
    
    new Ajax.Request("personal-policial!modificar",{
        method:"post",
        parameters: $("frmgestionarpersonalpolicial").serialize(),
        onSuccess: function(transport){
            var operacion =transport.responseText.evalJSON();
            alert(transport.responseText);
            if (operacion.success){
                Information("Aviso del Sistema",operacion.mensaje);
            }else{
                Information("Aviso del Sistema",operacion.mensaje);
            }
            winMantenerPersonal.destroy();
            gestionarPersonalPolicial();
        },
        onFailure:function(transport){
            Information("Aviso del Sistema","Sucedio un error al intentar cargar el formulario"+transport.responseText);
        }
    });
}

function eliminarPersonalPolicial(){
    Ext.MessageBox.confirm("Confirmación", "Eliminar Registro", function(button){
        if(button=="yes"){
            new Ajax.Request("personal-policial!eliminar",{
                method:"post",
                parameters:{
                    npepoIdentificador: registroPersonalPolicial.data.npepoIdentificador
                },
                onSuccess: function(transport){
                    var operacion = transport.responseText.evalJSON();
                    if (operacion.success){
                        Information("Aviso del Sistema",operacion.mensaje);
                    }else{
                        Information("Aviso del Sistema",operacion.mensaje);
                    }
                    gestionarPersonalPolicial();
                },
                onFailure: function(transport){
                    Information("Aviso del Sistema","Sucedio un error al intentar eliminar el registro"+transport.responseText);
                }
            });
        }
    });
}


function cargarDependencias2(){    
    new Ajax.Request("lista-dependencias",{
        method: "post",
        asynchronous:false,
        onSuccess: function(transport){
            var eiSelect = $("ndepeIdentificador");
            removeAllOptions(eiSelect);           
            alert(' removeAllOptions()');
            var lstDependencias = transport.responseText.evalJSON();
            alert(' lstDependencias');
            for (i=0;i<lstDependencias.dependencia.length;i++){
                var eOption = document.createElement("option");
                eOption.setAttribute("value", lstDependencias.dependencia[i].ndepeIdentificador);
                eOption.appendChild(document.createTextNode(lstDependencias.dependencia[i].cdepeNombre));
                eiSelect.appendChild(eOption);
            }
        },
        onFailure: function(transport){
            alert('Falla');
           alert( transport.responseText );
            Information("Aviso del Sistema","Sucedio un error al intentar cargar dependencias "+transport.responseText);
        }
    });
}

function cargarGrados_2(){
    alert('carga grados()');
    new Ajax.Request("lista-grados",{
        method: "post",
        asynchronous:false,
        onSuccess: function(transport){
            var egsSelect = $("ngradIdentificador");
            removeAllOptions(egsSelect);
            var lstgrados = transport.responseText.evalJSON();
            for (var i=0;i<lstgrados.grado.length;i++){
                var eOption = document.createElement("option");
                eOption.setAttribute("value", lstgrados.grado[i].ngradIdentificador);
                eOption.appendChild(document.createTextNode(lstgrados.grado[i].cgradDescripcion));
                egsSelect.appendChild(eOption);
            }
        },
        onFailure: function(transport){
            Information("Aviso del Sistema","Sucedio un error al intentar cargar grados "+transport.responseText);
        }
    });
}
var winAddUsuario = null;
function buscarPersona_2(){
    var dsPersonal=new Ext.data.Store({
        autoDestroy: true,
        url: "lista-persona",
        reader: new Ext.data.JsonReader(
        {
            root: "persona",
            fields:[{
                name: "cpersApepaterno",
                type: "string"
            },{
                name: "cpersApematerno",
                type: "string"
            },{
                name: "npersIdentificador",
                type: "integer"
            },{
                name: "cpersNombre",
                type: "string"
            }]
        })
    });
    dsPersonal.on("exception",function(proxy, type, action, options, response, arg){
        Ext.MessageBox.alert("Error",response.responseText);
    });
    dsPersonal.load();
    var grdPersona=new Ext.grid.GridPanel({
        height: 300,
        store: dsPersonal,
        plugins:[new Ext.ux.grid.Search({
            mode:'local',
            iconCls:false,
            minLength:2,
            width: 190
        })],
        columns:[{
            header: "Id",
            dataIndex: "npersIdentificador",
            sortable:true,
            width: 80
        },{
            header: "Apellido Paterno",
            dataIndex: "cpersApepaterno",
            sortable:true,
            width: 180
        },{
            header: "Persona",
            dataIndex: "cpersNombre",
            sortable:true,
            width: 180
        }],tbar:[]
    });
    grdPersona.on("dblclick",function(grid,rowIndex,e){
        var form=$("frmgestionarpersonalpolicial");
        form.nombreCompleto.value=registroPersona.data.cpersApepaterno + " " +registroPersona.data.cpersApematerno+" "+registroPersona.data.cpersNombre;
        form.npersIdentificador.value=registroPersona.data.npersIdentificador;
        winAddUsuario.hide();
    });
    var seleccionPersona=grdPersona.getSelectionModel();
    seleccionPersona.on("rowselect",function(sm,fila,registro){
        registroPersona=registro;
    });
    winAddUsuario= new Ext.Window({
        title:'Buscar Personal',
        closeAction:'destroy',
        width:500,
        height:360,
        items:[grdPersona],
        shim:false,
        modal:true,
        animCollapse:false,
        resizable:false,
        bbar:[{
            text:'Cancelar',
            iconCls:'icon-cancel',
            handler: function(){
                winAddUsuario.destroy();
            }
        }]
    });
    winAddUsuario.show();
    winAddUsuario.focus();
}

function printPersonalPolicial(){
    var width  = screen.width-50;
    var height = screen.height-100;
    var left   = 10;
    var top    = 10;
    var params = 'width='+width+',height='+height;
    params += ',top='+top+',left='+left;
    params += ',directories=no';
    params += ',location=no';
    params += ',menubar=no';
    params += ',resizable=yes';
    params += ',scrollbars=no';
    params += ',status=no';
    params += ',toolbar=no';
    window.open("PersonalPolicialServlet.pdf",'windowname',params);
}